"use strict";
const electron = require("electron");
const electronAPI = {
  // 文件系统操作
  file: {
    /**
     * 选择文件
     */
    select: (options) => electron.ipcRenderer.invoke("file:select", options),
    /**
     * 选择文件夹
     */
    selectFolder: () => electron.ipcRenderer.invoke("file:selectFolder"),
    /**
     * 保存文件
     */
    save: (data, defaultPath) => electron.ipcRenderer.invoke("file:save", data, defaultPath)
  },
  // 应用控制
  app: {
    /**
     * 最小化窗口
     */
    minimize: () => electron.ipcRenderer.invoke("app:minimize"),
    /**
     * 最大化/还原窗口
     */
    maximize: () => electron.ipcRenderer.invoke("app:maximize"),
    /**
     * 关闭窗口
     */
    close: () => electron.ipcRenderer.invoke("app:close"),
    /**
     * 隐藏窗口
     */
    hide: () => electron.ipcRenderer.invoke("app:hide"),
    /**
     * 显示窗口
     */
    show: () => electron.ipcRenderer.invoke("app:show"),
    /**
     * 检查窗口是否最大化
     */
    isMaximized: () => electron.ipcRenderer.invoke("app:isMaximized"),
    /**
     * 获取应用版本
     */
    getVersion: () => process.versions.electron
  },
  // 系统操作
  system: {
    /**
     * 打开外部链接
     */
    openExternal: (url) => electron.ipcRenderer.invoke("system:openExternal", url),
    /**
     * 在文件管理器中显示文件
     */
    showItemInFolder: (path) => electron.ipcRenderer.invoke("system:showItemInFolder", path),
    /**
     * 获取平台信息
     */
    getPlatform: () => process.platform,
    /**
     * 检查是否为开发环境
     */
    isDev: () => process.env.NODE_ENV === "development"
  },
  // 通知系统
  notification: {
    /**
     * 显示系统通知
     */
    show: (options) => electron.ipcRenderer.invoke("notification:show", options),
    /**
     * 检查通知权限
     */
    checkPermission: () => "granted"
    // Electron中默认有权限
  },
  // 设置管理
  settings: {
    /**
     * 获取所有设置
     */
    getAll: () => electron.ipcRenderer.invoke("settings:get"),
    /**
     * 获取窗口设置
     */
    getWindow: () => electron.ipcRenderer.invoke("settings:getWindow"),
    /**
     * 获取应用设置
     */
    getApp: () => electron.ipcRenderer.invoke("settings:getApp"),
    /**
     * 获取文件管理设置
     */
    getFileManager: () => electron.ipcRenderer.invoke("settings:getFileManager"),
    /**
     * 获取AI设置
     */
    getAI: () => electron.ipcRenderer.invoke("settings:getAI"),
    /**
     * 更新窗口设置
     */
    updateWindow: (settings) => electron.ipcRenderer.invoke("settings:updateWindow", settings),
    /**
     * 更新应用设置
     */
    updateApp: (settings) => electron.ipcRenderer.invoke("settings:updateApp", settings),
    /**
     * 更新文件管理设置
     */
    updateFileManager: (settings) => electron.ipcRenderer.invoke("settings:updateFileManager", settings),
    /**
     * 更新AI设置
     */
    updateAI: (settings) => electron.ipcRenderer.invoke("settings:updateAI", settings),
    /**
     * 重置所有设置
     */
    reset: () => electron.ipcRenderer.invoke("settings:reset"),
    /**
     * 导出设置
     */
    export: () => electron.ipcRenderer.invoke("settings:export"),
    /**
     * 导入设置
     */
    import: (settingsJson) => electron.ipcRenderer.invoke("settings:import", settingsJson)
  },
  // 窗口控制
  window: {
    /**
     * 切换窗口置顶状态
     */
    toggleAlwaysOnTop: () => electron.ipcRenderer.invoke("window:toggleAlwaysOnTop"),
    /**
     * 设置窗口置顶状态
     */
    setAlwaysOnTop: (alwaysOnTop) => electron.ipcRenderer.invoke("window:setAlwaysOnTop", alwaysOnTop)
  },
  // 自动更新
  updater: {
    /**
     * 检查更新
     */
    checkForUpdates: () => electron.ipcRenderer.invoke("updater:check"),
    /**
     * 下载更新
     */
    downloadUpdate: () => electron.ipcRenderer.invoke("updater:download"),
    /**
     * 安装更新并重启
     */
    installUpdate: () => electron.ipcRenderer.invoke("updater:install"),
    /**
     * 监听更新可用事件
     */
    onUpdateAvailable: (callback) => {
      electron.ipcRenderer.on("update-available", (_, info) => callback(info));
    },
    /**
     * 监听更新下载完成事件
     */
    onUpdateDownloaded: (callback) => {
      electron.ipcRenderer.on("update-downloaded", (_, info) => callback(info));
    },
    /**
     * 移除更新事件监听
     */
    removeUpdateListeners: () => {
      electron.ipcRenderer.removeAllListeners("update-available");
      electron.ipcRenderer.removeAllListeners("update-downloaded");
    }
  },
  // 拖拽支持
  drag: {
    /**
     * 启用文件拖拽
     */
    enableFileDrop: (callback) => {
      document.addEventListener("dragover", (e) => {
        e.preventDefault();
        e.stopPropagation();
      });
      document.addEventListener("drop", (e) => {
        var _a;
        e.preventDefault();
        e.stopPropagation();
        const files = Array.from(((_a = e.dataTransfer) == null ? void 0 : _a.files) || []);
        const filePaths = files.map((file) => file.path || file.name);
        callback(filePaths);
      });
    }
  },
  // 剪贴板操作
  clipboard: {
    /**
     * 写入文本到剪贴板
     */
    writeText: (text) => {
      navigator.clipboard.writeText(text);
    },
    /**
     * 从剪贴板读取文本
     */
    readText: () => {
      return navigator.clipboard.readText();
    }
  },
  // 开发工具
  devTools: {
    /**
     * 打开开发者工具
     */
    open: () => {
      if (process.env.NODE_ENV === "development") {
        electron.ipcRenderer.send("dev-tools:open");
      }
    },
    /**
     * 关闭开发者工具
     */
    close: () => {
      if (process.env.NODE_ENV === "development") {
        electron.ipcRenderer.send("dev-tools:close");
      }
    }
  },
  // 环境信息
  env: {
    /**
     * 是否为Electron环境
     */
    isElectron: true,
    /**
     * 是否为开发环境
     */
    isDev: process.env.NODE_ENV === "development",
    /**
     * 平台信息
     */
    platform: process.platform,
    /**
     * 架构信息
     */
    arch: process.arch,
    /**
     * Node.js版本
     */
    nodeVersion: process.versions.node,
    /**
     * Electron版本
     */
    electronVersion: process.versions.electron,
    /**
     * Chrome版本
     */
    chromeVersion: process.versions.chrome
  }
};
electron.contextBridge.exposeInMainWorld("electronAPI", electronAPI);
electron.contextBridge.exposeInMainWorld("isElectron", true);
electron.contextBridge.exposeInMainWorld("versions", {
  node: process.versions.node,
  chrome: process.versions.chrome,
  electron: process.versions.electron
});
console.log("RickPan Electron preload script loaded successfully");
